filechooser: Add a readonly :filters property
authorMatthias Clasen <mclasen@redhat.com>
Mon, 6 Jul 2020 14:34:33 +0000 (10:34 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 6 Jul 2020 15:03:48 +0000 (11:03 -0400)
This makes the filters list accessible in the
the inspector.

gtk/gtkfilechooser.c
gtk/gtkfilechooserbutton.c
gtk/gtkfilechooserutils.c
gtk/gtkfilechooserutils.h
gtk/gtkfilechooserwidget.c

index 93dbf91549457a22740344b4de2f5ccb5fbf88c5..0ce214feecc82fa01530dfaae0c30a5f296404b4 100644 (file)
@@ -168,6 +168,22 @@ gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
                                                              FALSE,
                                                              GTK_PARAM_READWRITE));
 
+  /**
+   * GtkFileChooser:filters:
+   *
+   * A #GListModel containing the filters that have been
+   * added with gtk_file_chooser_add_filter().
+   *
+   * The returned object should not be modified. It may
+   * or may not be updated for later changes.
+   */
+  g_object_interface_install_property (iface,
+                                       g_param_spec_object ("filters",
+                                                          P_("Filters"),
+                                                          P_("List model of filters"),
+                                                          G_TYPE_LIST_MODEL,
+                                                          GTK_PARAM_READABLE));
+
   /**
    * GtkFileChooser:create-folders:
    * 
index 575079b8dae34552fa8fc5c3e81fbf41c40ad95f..b735699a7533c31513efe065161e8bed214d7548 100644 (file)
@@ -1035,6 +1035,7 @@ gtk_file_chooser_button_get_property (GObject    *object,
     case GTK_FILE_CHOOSER_PROP_FILTER:
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
     case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
+    case GTK_FILE_CHOOSER_PROP_FILTERS:
       g_object_get_property (G_OBJECT (button->chooser), pspec->name, value);
       break;
 
index 71713a49ff17d12e2c9096a9b596e33e6d9bdd7a..91da4cfd36ed744c1e2b47f721890a6494a3869a 100644 (file)
@@ -92,17 +92,20 @@ void
 _gtk_file_chooser_install_properties (GObjectClass *klass)
 {
   g_object_class_override_property (klass,
-                                   GTK_FILE_CHOOSER_PROP_ACTION,
-                                   "action");
+                                    GTK_FILE_CHOOSER_PROP_ACTION,
+                                    "action");
   g_object_class_override_property (klass,
-                                   GTK_FILE_CHOOSER_PROP_FILTER,
-                                   "filter");
+                                    GTK_FILE_CHOOSER_PROP_FILTER,
+                                    "filter");
   g_object_class_override_property (klass,
-                                   GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
-                                   "select-multiple");
+                                    GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
+                                    "select-multiple");
   g_object_class_override_property (klass,
-                                   GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
-                                   "create-folders");
+                                    GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
+                                    "create-folders");
+  g_object_class_override_property (klass,
+                                    GTK_FILE_CHOOSER_PROP_FILTERS,
+                                    "filters");
 }
 
 /**
index 96f6658d6f4c52cc59fcf94babb8da92c00aeae4..5c5494a0ceb022e712b56761bc8a5920e3a176d4 100644 (file)
@@ -32,7 +32,8 @@ typedef enum {
   GTK_FILE_CHOOSER_PROP_FILTER,
   GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
   GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
-  GTK_FILE_CHOOSER_PROP_LAST                   = GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS
+  GTK_FILE_CHOOSER_PROP_FILTERS,
+  GTK_FILE_CHOOSER_PROP_LAST                   = GTK_FILE_CHOOSER_PROP_FILTERS
 } GtkFileChooserProp;
 
 void _gtk_file_chooser_install_properties (GObjectClass *klass);
index 1c2d2619ed222ff941d2a0625767647433f22e0b..48991021a87cf0e97782cfd64fb50f3dc99691a9 100644 (file)
@@ -3072,6 +3072,10 @@ gtk_file_chooser_widget_get_property (GObject    *object,
       g_value_set_boolean (value, impl->create_folders);
       break;
 
+    case GTK_FILE_CHOOSER_PROP_FILTERS:
+      g_value_set_object (value, impl->filters);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -5564,6 +5568,8 @@ gtk_file_chooser_widget_add_filter (GtkFileChooser *chooser,
     set_current_filter (impl, filter);
 
   show_filters (impl, TRUE);
+
+  g_object_notify (G_OBJECT (chooser), "filters");
 }
 
 static void
@@ -5597,6 +5603,8 @@ gtk_file_chooser_widget_remove_filter (GtkFileChooser *chooser,
 
   if (!impl->filters)
     show_filters (impl, FALSE);
+
+  g_object_notify (G_OBJECT (chooser), "filters");
 }
 
 static GListModel *